/*
给定一个字符串s和一个整数k，从字符串开头算起, 每计数至2k个字符，就反转这2k个字符中的前k个字符。
如果剩余字符少于k个，则将剩余字符全部反转。
如果剩余字符小于2k但大于或等于k个，则反转前k个字符，其余字符保持原样。

示例:
输入: s="abcdefg",k=2"
输出: "bacdfeg"
*/

void swapCharArray(char*&array,int len,int k){
    int left=0;
    int right=0;
    while(true){
        if(right+2*k<=len){
            //确定[0,2k-1]范围内的最右边界
            int leftBorder=left;
            right=right+k-1;
            while(left<right){
                char temp=array[left];
                array[left]=array[right];
                array[right]=temp;
                left++;
                right--;
            }
            //左右边界更新为下一次反转的位置
            left=right=leftBorder+2*k;
        }
        else if(right+k<=len){
            right=right+k-1;
            while(left<right){
                char temp=array[left];
                array[left]=array[right];
                array[right]=temp;
                left++;
                right--;
            }
            break;
        }
        else{
            right=len-1;
            while(left<right){
                char temp=array[left];
                array[left]=array[right];
                array[right]=temp;
                left++;
                right--;
            }
            break;
        }
    }
}